* clean_enh_ocupados.do
* This file applies some labels to the ENH datasets and cleans some of the variables.
* Cleans only the "ocupados" files - Registro tipo 60
* Inputs: All files in C:/Users/JorgeEduardo/Dropbox/AA_Minimum_Wage/Data/Importable/ENH
* Outputs: All files in C:/Users/JorgeEduardo/Dropbox/AA_Minimum_Wage/Data/Clean/ENH

clear all
version 13.1

* Project info
project, doinfo   
local master "`r(pdir)'"
local doname "`r(dofile)'" 



* Directory
* cd "B:/Col_Minimum_Wage"
cd "../../Data/Importable/ENH"

* Project calls
project, original("../../../Code/Clean/labels_enh_ocupados.do") 
project, original("`master'/Data/xwalks/tipo_trabajador.dta") 

* Registro tipo 60 - Ocupados

* Obtener una lista de variables comunes en todas las bases de datos
forvalues year=1996(1)2000 {
	forvalues trim=1(1)4 {
		use "`year'/TRIM `trim'/`year'_`trim'_ocupados.dta" , clear
		des, s
		* cap noi codebook salario_period
		unab vars: *
		if `year'==1996 & `trim'==1 local cv="`vars'"
		else local cv : list cv & vars
	}
}
di "`cv'" 

* tipo_registro id municipio segmento estrato sector seccion manzana vivienda hogar personas_hogar resultado_encuesta orden trabajo_permanente ocupacion actividad_empresa tipo_trabajador salario salario_alimentos ganancia_mes area fex



forvalues year=1996(1)2000 {
	forvalues trim=1(1)4 {
		project, uses("`year'/TRIM `trim'/`year'_`trim'_ocupados.dta")
		use "`year'/TRIM `trim'/`year'_`trim'_ocupados.dta" , clear	
		* For 1996_4 I will add a variable, cubierto_ss
		if `year'==1996 & `trim'==4 {
			project, uses("`year'/TRIM `trim'/`year'_`trim'_saludss.dta") preserve
			merge 1:1 id orden using "`year'/TRIM `trim'/`year'_`trim'_saludss.dta", keep(match master) keepusing(cubierto_ss)
			drop _merge
		}
		if `year'==2000 & `trim'==2 {
			project, uses("`year'/TRIM `trim'/`year'_`trim'_informalidad.dta") preserve
			merge 1:1 id orden using "`year'/TRIM `trim'/`year'_`trim'_informalidad.dta", keep(match master) keepusing(afiliado_salud horas_semana)
			drop _merge
		}
		do "../../../Code/Clean/labels_enh_ocupados.do"
		drop if id==""
		drop if orden==.
		*** Base specific problems
		* Blanks in identifier in 1997
		if `year'==1997  replace id=subinstr(id," ","0",.)
		* Problema con un id en 1999 -4
		if `year'==1999 & `trim'==4 replace id="7300103630040010800201101" if id=="730010363004 010800201101"
		* Hay un hogar que tiene 43! personas en 1997-1. No sé si preparan la comida todos juntos. Mejor lo elimino
		drop if personas_hogar==43 			
		* Work on common variables
		la val tipo_registro tipo
		**
		la val trabajo_permanente trabajo_permanente
		**
		* This recode works assigning the right end boundaries
		* Much faster than standard recode
		cap confirm numeric variable ocupacion
		if _rc {
			replace ocupacion="60" if ocupacion=="6*"	
			destring ocupacion, replace
		}
		gen cocupacion = recode(ocupacion,0,19,21,39,49,59,64,98,99)
		la val cocupacion cocupacion
		**
		gen cactividad_empresa=recode(actividad_empresa,13,29,39,42,50,63,72,83,96,99)
		replace cactividad_empresa=. if actividad_empresa == 99 | actividad_empresa==0
		la val cactividad_empresa cactividad_empresa
		**
		* 2000 - Change in tipo trabajador codes
		if `year'==2000 {
			gen tipo2000 = tipo_trabajador
			merge n:1 tipo2000 using "`master'/Data/xwalks/tipo_trabajador.dta", keep(match master)
			drop _merge
			replace tipo_trabajador = tipo1999
			drop tipo1999 tipo2000
		}
		la val tipo_trabajador tipo_trabajador
		**
		cap confirm string variable horas_ultima
		if !_rc {
			replace horas_ultima="" if horas_ultima=="8/" | horas_ultima=="4/"
			destring horas_ultima, replace
		}
		cap confirm numeric variable horas_ultima
		if !_rc replace horas_ultima=. if horas_ultima==99			
		**
		cap confirm numeric variable horas_semana
		if !_rc replace horas_semana=. if horas_semana==99		
		**
		cap confirm numeric variable salario
		if _rc destring salario, replace
		
		* Missings salario
		replace salario = . if salario==99 | salario==98
		
		* Salario_period existe excepto para los últimos dos trimestres
		* Hay que volverlo mensual. Salario_ mensual = salario x veces por mes.
		cap confirm variable salario_period
		if !_rc{
			replace salario_period=30 if salario_period==5
			replace salario_period=. if salario_period==9
			la val salario_period salario_period
		}
		if `year'==2000 & (`trim'==3 | `trim'==4) gen salario_period = 1 if salario!=.
		**
		foreach x in motivo_trab_mas afiliado_salud afiliado_pension { 
			cap confirm variable `x'
			if !_rc replace `x' = . if `x' == 9
		}
		cap confirm variable motivo_trab_mas
		if !_rc la val motivo_trab_mas motivo_trab_mas
		
		
		* Ingreso string
		cap confirm string variable ing_trabajo
		if !_rc destring ing_trabajo, replace
		cap confirm numeric variable ing_trabajo
		if !_rc replace ing_trabajo=. if ing_trabajo==98 | ing_trabajo==99
		cap confirm string variable ing_intereses
		if !_rc destring ing_intereses, replace
		cap confirm numeric variable ing_intereses
		if !_rc replace ing_intereses=. if ing_intereses==98 | ing_intereses==99
		*Codificación de área está diferente dentro de los años, ¡Qué sufrimiento!
		replace area=76 if area==761
		replace area=11 if area==111
		if `year'==1996 | `year'==1997 & `trim'<=2 {
			gen area961_972=area
			merge n:1 area961_972 using "../../xwalks/area.dta", update replace keep(1 3 4 5)
			drop if _merge==2
			drop _merge nombre
		}			
		la val area area
		noi des, s
		noi codebook, detail problems all
		compress 
		save "../../Clean/ENH/`year'/TRIM `trim'/`year'_`trim'_ocupados.dta", replace
		project, creates("../../Clean/ENH/`year'/TRIM `trim'/`year'_`trim'_ocupados.dta")
	}
}



  